﻿namespace DimensionsHelper.LanguageService.Symbols;

/// <summary>
///     脚本符号类型
/// </summary>
public enum SymbolKinds
{
    /// <summary>
    ///     未定义的符号
    /// </summary>
    Undefined,

    /// <summary>
    ///    多个符号的组合
    /// </summary>
    Union,

    /// <summary>
    ///     宏定义
    /// </summary>
    Macro,

    /// <summary>
    ///     参数宏参数符号
    /// </summary>
    MacroParameter,

    /// <summary>
    ///     行标签
    /// </summary>
    Label,

    /// <summary>
    ///     变量定义
    /// </summary>
    Variable,

    /// <summary>
    ///     数组定义
    /// </summary>
    Array,

    /// <summary>
    ///     数组类型，用作类型绑定中的类似 TypeName[] 的数组类型。
    /// </summary>
    ArrayType,

    /// <summary>
    ///     参数定义
    /// </summary>
    Parameter,

    /// <summary>
    ///     常量定义
    /// </summary>
    Constant,

    /// <summary>
    ///     函数定义
    /// </summary>
    Function,

    /// <summary>
    ///     模块定义
    /// </summary>
    Module,

    /// <summary>
    ///     命名的类型定义，例如：类、接口等
    /// </summary>
    NamedType,

    /// <summary>
    ///     类或接口的属性定义
    /// </summary>
    Property,

    /// <summary>
    ///     类或接口的方法定义
    /// </summary>
    Method,

    /// <summary>
    ///     使用Section声明的语句块，此符号可以使用
    ///     GoTo语句进行跳转。
    /// </summary>
    Section,

    /// <summary>
    ///     使用Event声明的DMS语句区间
    /// </summary>
    EventSection,

    /// <summary>
    ///     使用Job声明的DMS语句区间
    /// </summary>
    JobSection,

    /// <summary>
    ///     使用InputDataSource声明的DMS语句区间
    /// </summary>
    InputDataSourceSection,

    /// <summary>
    ///     使用OutputDataSourceSection声明的DMS语句区间
    /// </summary>
    OutputDataSourceSection,

    /// <summary>
    ///     使用GlobalVariablesSection声明的DMS语句区间
    /// </summary>
    GlobalVariablesSection,

    /// <summary>
    ///     使用MetadataSection声明的DMS语句区间
    /// </summary>
    MetadataSection,


    /// <summary>
    ///     使用LoggingSection声明的DMS语句区间
    /// </summary>
    LoggingSection,
    
    
    /// <summary>
    ///     在dms语句块中声明的各种属性
    /// </summary>
    DmsProperty,


    /// <summary>
    ///     fields关键字后的子字段列表
    /// </summary>
    MetadataClass,


    /// <summary>
    ///     元数据字段
    /// </summary>
    MetadataField,


    /// <summary>
    ///     元数据中允许在不同上下文类型、语言下保存不同值的符号
    /// </summary>
    MetadataArealObject,


    /// <summary>
    ///     元数据字段中 db 关键字声明的语句块中的单个属性
    /// </summary>
    MetadataDbProperty,


    /// <summary>
    ///     元数据的简单后缀元素，例如：表达式、分类类型等
    /// </summary>
    MetadataSuffix,


    /// <summary>
    ///     元数据分类定义
    /// </summary>
    MetadataCategory
}